`
https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/
`

/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function (nums) {
  if (nums.length <= 2) return nums.length

  let slow = 0, fast = 0

  // 计数器，记录重复次数
  let count = 0

  while (fast < nums.length) {

    if (
      // 此时，对于 nums[0..slow] 来说，nums[fast] 是一个新的元素，加进来
      nums[slow] !== nums[fast] ||
      // 此时，对于 nums[0..slow] 来说，nums[fast] 重复次数小于 2，也加进来
      slow < fast && count < 2
    ) {
      slow++
      nums[slow] = nums[fast]
    }
    fast++
    count++
    // 如果新数字不重复，清空计数器
    if (fast < nums.length && nums[fast] !== nums[fast - 1]) {
      count = 0
    }
  }

  return slow + 1
};